# Variables
PROJECT = calca
CC = gcc
CXXFLAGS = -g -I. -DYYDEBUG=1 -DYYERROR_VERBOSE=1
OBJS = $(PROJECT).o fraction.o lex.yy.o y.tab.o

# Linking object files
$(PROJECT): $(OBJS)
		$(CC) -o $(PROJECT) $(OBJS)
		@echo $(PROJECT): make complete

# Compiling source files
$(PROJECT).o: $(PROJECT).c fraction.h
	$(CC) $(CXXFLAGS) -c -o $(PROJECT).o $(PROJECT).c
fraction.o: fraction.c fraction.h
	$(CC) $(CXXFLAGS) -c -o fraction.o fraction.c
lex.yy.o: lex.yy.c y.tab.h 
	$(CC) $(CXXFLAGS) -c -o lex.yy.o lex.yy.c
y.tab.o: y.tab.c
	$(CC) $(CXXFLAGS) -c -o y.tab.o y.tab.c

# lex & yacc
lex.yy.c: parser.l
	lex parser.l
y.tab.c: parser.y
	yacc -y -d parser.y
y.tab.h: parser.y
	yacc -y -d parser.y

# cleanup
clean:
	rm *.o $(PROJECT) lex.yy.c y.tab.c y.tab.h *~

